Imports System.Data
Imports BLGestionProyecto.BLGPHoraRegistro
Imports System.Collections.Generic
Imports DevExpress.Web.ASPxEditors
Imports System.Web.UI

Partial Class wfrmHorasRegistro
    Inherits System.Web.UI.Page
    Dim cBLGPHoraRegistro As New BLGestionProyecto.BLGPHoraRegistro
    Dim cBLGPProyectoActividad As New BLGestionProyecto.BLGPProyectoActividad
    Dim cBE As New BEGestionProyecto.BEGPHoraRegistro

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Try
            Dim lBLGPPersonal As New BLGestionProyecto.BLGPPersonal
            If Not Page.IsPostBack Then
                poLimpiarCampos()
                hdncodPersona.Value = Session("codPersona")
                poLlenarCombos()
                If Not Request.QueryString("BSQACT") Is Nothing Then
                    cBE = CType(Session("BEGPHoraRegistroBSQACTIVIDAD"), BEGestionProyecto.BEGPHoraRegistro)
                    poLlenarCamposTemporal()
                    'If Request.QueryString("BSQACT") = clsGPEstructuras.enmRPTACONFIRMA.GPACEPTAR Then
                    'End If
                Else
                    If Session("EDITAR1") = clsGPEstructuras.enmEstadoDocumentos.GPESTEDITAR Then
                        'recibe  session(usuario)
                        hdnregistrohoraID.Value = Request.QueryString("CODHOR")
                        hdnhorProyActPerID.Value = Request.QueryString("CODPROACT")
                        poLlenarCampos()
                    Else
                        Dim lDt1 As DataTable = lBLGPPersonal.fuBLBuscarPersonalx(hdncodPersona.Value)
                        If lDt1.Rows.Count > 0 Then
                            lblPersonal.Text = lDt1.Rows(0)("perNombreCorto")
                            lblCategoria.Text = lDt1.Rows(0)("catNombreCategoria")
                            hdncodCategoria.Value = lDt1.Rows(0)("percodCategoria").ToString
                        End If

                    End If
                End If
            End If
        Catch ex As Exception
            lblMensaje.Text = Err.Description
        End Try
    End Sub
    Sub poLlenarCamposTemporal()
        Try
            poLlenarCombos()
            Dim lBLGPPersonal As New BLGestionProyecto.BLGPPersonal
            With cBE
                txtFecha1.Text = Format(.HorFechRegistro, "dd/MM/yyyy")
                txtHoraInicio1.Text = .HORAINICIO
                txtHoraFin1.Text = .HORAFINAL
                txtObservacion1.Text = .HorobsReghora
                cboProyecto.SelectedValue = .HorProyActPerID
                hdnhorProyActPerID.Value = cBE.HorProyActPerID
                hdncodPersona.Value = .CODPERSONA
                lblCantidadHoras.Text = .CANTHORAS
                hdncodCategoria.Value = .CODCATEGORIA
                hdnregistrohoraID.Value = cBE.HorRegistrohoraID
                cboProyecto.SelectedValue = cBE.CODPROYECTO
                Dim lDt1 As DataTable = lBLGPPersonal.fuBLBuscarPersonalx(hdncodPersona.Value)
                If lDt1.Rows.Count > 0 Then
                    lblPersonal.Text = lDt1.Rows(0)("perNombreCorto")
                    lblCategoria.Text = lDt1.Rows(0)("catNombreCategoria")
                    hdncodCategoria.Value = lDt1.Rows(0)("percodCategoria").ToString
                End If
                lblActividad.Text = cBE.NOMBREACTIVIDAD
            End With
        Catch ex As Exception
            lblMensaje.Text = Err.Description
        End Try
    End Sub
    Sub poLlenarCampos()
        Try
            Dim lDt As DataTable = cBLGPHoraRegistro.fuBLBuscarHoraRegistrox(hdnregistrohoraID.Value)
            Dim lBLGPPersonal As New BLGestionProyecto.BLGPPersonal
            If lDt.Rows.Count > 0 Then
                txtFecha1.Text = lDt.Rows(0)("horFechRegistro").ToString.Substring(0, 10)
                txtObservacion1.Text = lDt.Rows(0)("horobsReghora").ToString
                txtHoraInicio1.Text = lDt.Rows(0)("horHoraInicio").ToString.Substring(0, 5)
                txtHoraFin1.Text = lDt.Rows(0)("horHoraFinal").ToString.Substring(0, 5)
                lblCategoria.Text = lDt.Rows(0)("catNombreCategoria").ToString
                hdncodCategoria.Value = lDt.Rows(0)("catCodCategoria").ToString
                lblActividad.Text = lDt.Rows(0)("actDescActividad")
                cboProyecto.SelectedValue = lDt.Rows(0)("prjProyectoID")
                lblCantidadHoras.Text = lDt.Rows(0)("CANTHORAS")
                Dim lDt1 As DataTable = lBLGPPersonal.fuBLBuscarPersonalx(hdncodPersona.Value)
                If lDt1.Rows.Count > 0 Then
                    lblPersonal.Text = lDt1.Rows(0)("perNombreCorto").ToString
                End If
            End If
            poCargarEstructura()
        Catch ex As Exception
            lblMensaje.Text = Err.Description
        End Try

    End Sub

    Public Sub poLlenarCombos()
        Try

            Dim lBLGPProyectoActividad As New BLGestionProyecto.BLGPHoraRegistro
            Dim lDt As DataTable = lBLGPProyectoActividad.fuBLListarProyectoxPersona(hdncodPersona.Value)
            cboProyecto.DataValueField = "prjProyectoID"
            cboProyecto.DataTextField = "prjNombreCorto"
            cboProyecto.DataSource = lDt
            cboProyecto.DataBind()
        Catch ex As Exception
            lblMensaje.Text = Err.Description
        End Try
    End Sub

    Public Sub poLimpiarCampos()
        txtFecha1.Text = Now.Date
        txtHoraFin1.Text = ":"
        txtObservacion1.Text = ""
        txtHoraInicio1.Text = ":"
        lblActividad.Text = ""
        lblCantidadHoras.text = ""
        'chkContinuar.Checked = False
        'chkContinuar.Visible = False
    End Sub
    Function fuValidarDatos(ByVal psTipoSeleccion As String) As Boolean
        Dim lbErr As Boolean
        Try
            lblMensaje.Text = ""
            Dim lfHoraI As DateTime
            Dim lfHoraF As DateTime
            hdnhorProyActPerID.Value = Val(hdnhorProyActPerID.Value)
            Select Case psTipoSeleccion
                Case clsGPEstructuras.enmEstadoDocumentos.GPESTNUEVO, clsGPEstructuras.enmEstadoDocumentos.GPESTEDITAR
                    If lblActividad.Text.Length = 0 Then
                        lblMensaje.Text &= clsGPUtilidades.fuMensajeUsuValidar(clsGPEstructuras.enmMSGalUsuValidar.GPMSGDATOVACIO, " Actividad ") & "</BR>"
                        lbErr = True
                    End If
                    If IsDate(txtFecha1.Text) = False Then
                        lblMensaje.Text &= clsGPUtilidades.fuMensajeUsuValidar(clsGPEstructuras.enmMSGalUsuValidar.GPMSGFECHAINVALIDA, "Consumo") & "</BR>"
                        lbErr = True
                    End If
                    lfHoraI = poConvertiraHora(txtFecha1.Text, txtHoraInicio1.Text)
                    If lfHoraI.Date = "#1/1/1900#" Then
                        lblMensaje.Text &= "* Ingrese una Hora Inicio Valida</BR>"
                        lbErr = True
                    End If
                    lfHoraF = poConvertiraHora(txtFecha1.Text, txtHoraFin1.Text)
                    If lfHoraF.Date = "#1/1/1900#" Then
                        lblMensaje.Text &= "* Ingrese una Hora Final Valida</BR>"
                        lbErr = True
                    End If
                    If DateDiff(DateInterval.Minute, lfHoraI, lfHoraF) <= 0 Then
                        lblMensaje.Text &= clsGPUtilidades.fuMensajeUsuValidar(clsGPEstructuras.enmMSGalUsuValidar.GPMSGHORAINICIOMAYORFINAL) & "</BR>"
                        lbErr = True
                    End If
            End Select
            Dim piHorcodReghora As Integer
            If psTipoSeleccion = clsGPEstructuras.enmEstadoDocumentos.GPESTEDITAR Then
                piHorcodReghora = hdnregistrohoraID.Value
            Else
                piHorcodReghora = 0
            End If

            Dim pLstError As New List(Of String)
            Call cBLGPHoraRegistro.fuBLValidarAlGuardar(lfHoraI, lfHoraF, hdncodPersona.Value, txtFecha1.Text, _
                hdnhorProyActPerID.Value, DateDiff(DateInterval.Minute, lfHoraI, lfHoraF) / 60, piHorcodReghora, IIf(psTipoSeleccion = 2, True, False) _
                , pLstError)
            For x As Integer = 0 To pLstError.Count - 1 Step 2
                If Val(pLstError(x + 1)) = 2 Then 'CRITICO
                    lblMensaje.Text &= pLstError(x)
                    lbErr = True
                    'chkContinuar.Visible = False
                    'chkContinuar.Checked = False
                    Exit For
                    'ElseIf Val(pLstError(x + 1)) = 3 Then 'CONPREGUNTA
                    '    If chkContinuar.Visible Then
                    '        If chkContinuar.Checked Then

                    '            Exit For
                    '        Else
                    '            lbErr = True
                    '        End If
                    '    Else
                    '        lbErr = True
                    '        'chkContinuar.Visible = True
                    '        'chkContinuar.Checked = False
                    '        lblMensaje.Text &= "* Seleccione si desea continuar en la parte inferior y luego indique GUARDAR</BR>"
                    '    End If
                End If

            Next x

            Return Not lbErr
        Catch ex As Exception
            lblMensaje.Text = Err.Description
        End Try
    End Function

    Protected Sub btnGuardar_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnGuardar.Click
        poGuardar()
    End Sub
    Public Sub poGuardar()
        lblMensaje.Text = ""
        If Not fuValidarDatos(Session("EDITAR1")) Then
            Exit Sub
        End If
        cBE = CType(Session("BEGPHoraRegistroBSQACTIVIDAD"), BEGestionProyecto.BEGPHoraRegistro)
        Try
            Dim lfHoraI As DateTime
            Dim lfHoraF As DateTime
            lfHoraI = poConvertiraHora(txtFecha1.Text, txtHoraInicio1.Text)
            lfHoraF = poConvertiraHora(txtFecha1.Text, txtHoraFin1.Text)
            With cBE
                .HorFechRegistro = CDate(txtFecha1.Text)
                .HorHoraInicio = lfHoraI
                .HorHoraFinal = lfHoraF
                .HorobsReghora = txtObservacion1.Text
                .HorEstado = 1
                .HorUserCreacionID = Session("CODUSUARIO")
                .HorUserModificacion = Session("CODUSUARIO")
                '.HorProyActPerID = hdncodPersona.Value
                .HorCantMins = DateDiff(DateInterval.Minute, lfHoraI, lfHoraF)
                '.HorcodCategoria = hdncodCategoria.Value
            End With

            Dim lsLstMsgErr As New List(Of String)
            If Session("EDITAR1") = clsGPEstructuras.enmEstadoDocumentos.GPESTNUEVO Then
                If cBLGPHoraRegistro.fuBLInsertarHoraRegistro(cBE) = False Then
                    lblMensaje.Text = clsGPUtilidades.fuMensajeUsuario(clsGPEstructuras.enmMSGalUsuario.GPMSGERRORGUARDAR)
                    Exit Sub
                Else
                    lblMensaje.Text = clsGPUtilidades.fuMensajeUsuario(clsGPEstructuras.enmMSGalUsuario.GPMSGREGISTROOK)
                End If

            Else
                cBE.HorRegistrohoraID = hdnregistrohoraID.Value
                If cBLGPHoraRegistro.fuBLActualizarHoraRegistro(cBE) = False Then
                    lblMensaje.Text = clsGPUtilidades.fuMensajeUsuario(clsGPEstructuras.enmMSGalUsuario.GPMSGERRORGUARDAR)
                    Exit Sub
                Else
                    lblMensaje.Text = clsGPUtilidades.fuMensajeUsuario(clsGPEstructuras.enmMSGalUsuario.GPMSGREGISTROOK)
                End If
                Response.Redirect("wfrmHoraRegistroListar.aspx?RSP=" & clsGPEstructuras.enmMSGalUsuario.GPMSGACTUALIZACIONOK)
            End If
            poLimpiarCampos()
        Catch ex As Exception
            lblMensaje.Text = Err.Description
        End Try
    End Sub

    Sub poTratarMensajes(ByVal pLst As List(Of String))
        For x As Integer = 0 To pLst.Count - 1 Step 2
            If pLst(x + 1) = "CRITICO" Then

            End If
        Next x
    End Sub
    Function poConvertiraHora(ByVal pfFecha As DateTime, ByVal psHora As String) As String

        Dim lsHora As String
        lsHora = pfFecha.Date.Date & " " & psHora
        Try

            If Not IsDate(lsHora) Then
                'If psHora.IndexOf(":") = -1 Then
                '    lsHora = psHora & "00".Substring(0, 2) & ":00"
                'ElseIf psHora.IndexOf(":") = 1 Then
                Return CDate("#1/1/1900#")
            Else
                lsHora = DateTime.Parse(lsHora)
            End If
            Return lsHora
        Catch ex As Exception
            lblMensaje.Text = ex.Message
        End Try
    End Function

    Protected Sub btnRetornar_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnRetornar.Click
        Response.Redirect("wfrmHoraRegistroListar.aspx")
    End Sub

    Protected Sub Calendar1_SelectionChanged(ByVal sender As Object, ByVal e As EventArgs) Handles Calendar1.SelectionChanged
        txtFecha1.Text = Calendar1.SelectedDate.ToString("dd/MM/yyyy")
        Calendar1.Visible = False
    End Sub

    Protected Sub imgButon_Click(ByVal sender As Object, ByVal e As System.Web.UI.ImageClickEventArgs) Handles imgButon.Click
        If (Calendar1.Visible = False) Then
            Calendar1.Visible = True
        Else
            Calendar1.Visible = False
        End If
    End Sub

    Protected Sub btnBuscar_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnBuscar.Click
        Try
            poCargarEstructura()
            Session("BEGPHoraRegistroBSQACTIVIDAD") = cBE
            Response.Redirect(String.Format("wctlProyectoActividadPersonalBuscar.aspx?BSQHOR=1&CODPRO={0}&CODPER={1}", cboProyecto.SelectedValue, hdncodPersona.Value))
        Catch ex As Exception
            lblMensaje.Text = ex.Message

        End Try
    End Sub
    Sub poCargarEstructura()
        With cBE
            If Not IsDate(txtFecha1.Text) Then
                txtFecha1.Text = Format(Now.Date, "dd/MM/yyyy")
            End If
            .HorFechRegistro = txtFecha1.Text
            .HorobsReghora = txtObservacion1.Text
            .HorEstado = 1
            .HorUserCreacionID = Session("CODUSUARIO")
            .HorUserModificacion = Session("CODUSUARIO")
            .HorProyActPerID = Val(hdnhorProyActPerID.Value)
            .CANTHORAS = Val(lblCantidadHoras.Text)
            .CODPERSONA = hdncodpersona.value
            '.HorcodCategoria = Val(hdncodCategoria.Value)
            .NOMBREACTIVIDAD = lblActividad.Text
            If cboProyecto.Items.Count > 0 Then
                .NOMBREPROYECTO = cboProyecto.SelectedItem.Text
            End If
            .HORAINICIO = txtHoraInicio1.Text
            .HORAFINAL = txtHoraFin1.Text
            .HorRegistrohoraID = Val(hdnregistrohoraID.Value)
            .CODPROYECTO = cboProyecto.SelectedValue
            Session("BEGPHoraRegistroBSQACTIVIDAD") = cBE
        End With
    End Sub

    Protected Sub BtnCalcular_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles BtnCalcular.Click
        Dim lfHoraI As DateTime
        Dim lfHoraF As DateTime
        lfHoraI = poConvertiraHora(txtFecha1.Text, txtHoraInicio1.Text)
        lfHoraF = poConvertiraHora(txtFecha1.Text, txtHoraFin1.Text)
        lblCantidadHoras.text = Format(DateDiff(DateInterval.Minute, lfHoraI, lfHoraF) / 60, "#0.00")

    End Sub
End Class
